package chp11.homework;

import java.util.Scanner;

public class PrimeChecker {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数：");
        int num = scanner.nextInt();
        scanner.close();
        boolean isPrime = isPrime(num);
        // 根据 isPrime 方法的返回值，打印相应的信息
        if (isPrime) {
            System.out.println(num + " 是素数。");
        } else {
            System.out.println(num + " 不是素数。");
        }
    }

    /**
     * 判断一个整数是否为素数的方法
     * @param num 需要判断的整数
     * @return 如果 num 是素数，则返回 true；否则返回 false
     */
    public static boolean isPrime(int num) {
        // 如果 num 小于等于 1，则直接返回 false，因为素数定义为大于 1 的自然数
        if (num <= 1) {
            return false;
        }
        // 特殊情况处理：2 是唯一的偶数素数，直接返回 true
        if (num == 2) {
            return true;
        }
        // 如果 num 是偶数，则直接返回 false，因为除了 2 以外的偶数都不是素数
        if (num % 2 == 0) {
            return false;
        }
        // 从 3 开始，以 2 为步长，检查到 sqrt(num)。如果 num 能被任意奇数整除，则返回 false
        for (int i = 3; i <= Math.sqrt(num); i += 2) {
            if (num % i == 0) {
                return false;
            }
        }
        // 如果 num 是素数，则返回 true
        return true;
    }
}